// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package com.nostra13.universalimageloader.cache.memory;
import android.graphics.Bitmap;
import com.nostra13.universalimageloader.utils.L;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
// Referenced classes of package com.nostra13.universalimageloader.cache.memory:
// BaseMemoryCache
public abstract class LimitedMemoryCache extends BaseMemoryCache
{
private static final int a = 16;
private static final int b = 0x1000000;
private final int c;
private final AtomicInteger d = new AtomicInteger();
private final List e = Collections.synchronizedList(new LinkedList());
public LimitedMemoryCache(int i)
{
c = i;
if (i > 0x1000000)
{
Object aobj[] = new Object[1];
aobj[0] = Integer.valueOf(16);
L.w("You set too large memory cache size (more than %1$d Mb)", aobj);
}
}
public void clear()
{
e.clear();
d.set(0);
super.clear();
}
protected abstract int getSize(Bitmap bitmap);
protected int getSizeLimit()
{
return c;
}
public volatile boolean put(Object obj, Object obj1)
{
return put((String)obj, (Bitmap)obj1);
}
public boolean put(String s, Bitmap bitmap)
{
int i = getSize(bitmap);
int j = getSizeLimit();
int k = d.get();
boolean flag = false;
if (i < j)
{
int l = k;
do
{
if (l + i <= j)
{
break;
}
Bitmap bitmap1 = removeNext();
if (e.remove(bitmap1))
{
l = d.addAndGet(-getSize(bitmap1));
}
} while (true);
e.add(bitmap);
d.addAndGet(i);
flag = true;
}
super.put(s, bitmap);
return flag;
}
public volatile void remove(Object obj)
{
remove((String)obj);
}
public void remove(String s)
{
Bitmap bitmap = super.get(s);
if (bitmap != null && e.remove(bitmap))
{
d.addAndGet(-getSize(bitmap));
}
super.remove(s);
}
protected abstract Bitmap removeNext();
}